﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HospitalAdmision
{
    public partial class F_Cocina : Form
    {
        ProyHospitalEntities db = new ProyHospitalEntities();
        public F_Cocina()
        {
            InitializeComponent();
        }
        int idUs = 0;
        private void limpiar()
        {
            // Permite limpiar todas las cajas de texto
            text_menu.Clear();
            text_precio.Clear();
            text_cama.Clear();
            text_buscar.Clear();
            text_nombre.Clear();
            text_apellidoP.Clear();
            text_apellidoM.Clear();
        }

        private void bu_buscar_Click(object sender, EventArgs e)
        {
            // Pregunta si la caja de texto está en blanco muestra el siguiente mensaje
            if (text_buscar.Text == "")
            {
                // muestra este mensaje que esta en blanco la caja de texto de busquedad
                MessageBox.Show("Tiene que ingresar el rut del paciente", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                // busca lo que con tenga la base de datos si es igual al caja de texto

                Paciente pa = db.Paciente.FirstOrDefault(a => a.rut == text_buscar.Text);
                // si la busque produjo resultados se le asignan los datos a las cajas de textos
                if (pa != null)
                {
                    
                    text_buscar.Text = pa.rut;
                    text_apellidoM.Text = pa.apeMaterno;
                    text_apellidoP.Text = pa.apePaterno;
                    text_nombre.Text = pa.nombres;
                    // permite llamar a la columna de tabla correspondiente
                    Cama ca = db.Cama.FirstOrDefault(c => c.FK_rut == text_buscar.Text);
                    // si son valor numerico se tranforman en un String
                    text_cama.Text = Convert.ToString(ca.id_cama);
                }
                else
                {
                    //  lo contrario muestra un mensaje 
                    // si no se encuentra muestra este mensaje 
                    MessageBox.Show("No exite el paciente", "advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
        }

        private void Button_enviar_Click(object sender, EventArgs e)
        {
            //si la caja de texto del run esta vacía muestra un mensaje
            if(text_buscar.Text=="")
            {
            MessageBox.Show("Primero tiene que buscar el rut del paciente", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
            //si las cajas de textos están vacías muestra un mensaje
            if ((text_precio.Text == "") || (text_menu.Text == "")||(text_apellidoM.Text=="")||(text_apellidoP.Text=="")||(text_cama.Text==""))
            {
                MessageBox.Show("Tiene que ingresar todos los campos(*)", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else // de lo contario los valores se insertan
            {
                //la conexcion de base de datos con la aplicacion

                // Estas variables permiten traformar las cajas de texto en enteros
                int pre = Convert.ToInt32(text_precio.Text);
                int cam = Convert.ToInt32(text_cama.Text);
                //asigna los valos de las cajas de texto a las columnas de la tabla Cocina
                Cocina co = new Cocina
                {
                   //asigna las columnas de base de datos a las cajas de texto del formulario
                    FK_rut=text_buscar.Text,
                    precio = pre,
                    menu = text_menu.Text,
                    FK_cama = cam,
                    fechaPreparacion = DateTime.Now
                };
                Cargos cargo = new Cargos();
                cargo.FK_rut = text_buscar.Text;
                cargo.descripcion = text_menu.Text;
                cargo.monto = Convert.ToInt16(text_precio.Text);
                cargo.fecha = DateTime.Now;
             

                // pregunta si desea guardar los datos
                if (MessageBox.Show("¿Desea guardar el servio de cocina?", "Informacion", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes)
                {
                    //permite guardar los datos a la base de datos
                    db.Cocina.Add(co);
                    db.Cargos.Add(cargo);
                    // realiza los cambios de la base de datos
                    db.SaveChanges();
                  
                    // llama al metodo para limpiar las cajas de texto
                    limpiar(); 
                }
                else
                {
                    // llama al metodo para limpiar las cajas de texto
                    limpiar();
                }
               
            }
        }
          }

        private void text_precio_KeyPress(object sender, KeyPressEventArgs e)
        {
            // habilita solo los números del teclado
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            //habilita la tecla “delete” del teclado
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            // deshabilita los caracteres que no correspondan a las anteriores condiciones
            {
                e.Handled = true;
            }

        }

        private void text_plato_KeyPress(object sender, KeyPressEventArgs e)
        {
            // habilita solo letras
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            //habilita la tecla “delete” del teclado
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            // deshabilita los caracteres que no correspondan a las anteriores condiciones
            {
                e.Handled = true;
            }

        }

        private void text_menu_KeyPress(object sender, KeyPressEventArgs e)
        {
             // habilita solo letras
            if (Char.IsLetter(e.KeyChar))
            {
                e.Handled = false;
            }
            //permite ingresar espacios en blanco
            else if (Char.IsWhiteSpace(e.KeyChar))
            {
                e.Handled = false;
            }
            //habilita la tecla “delete” del teclado
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
              // Deshabilita los caracteres que no correspondan a las anteriores condiciones            {
                e.Handled = true;
            }
    
        }
        public void recibeId(int id)
        {
            idUs = id;
        }

        private void F_Cocina_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (idUs != 1)
            {
                FormPrincipal fp = new FormPrincipal();
                fp.Show();
            }
        } 
    }
}
